#include <stdio.h>

/*
 * 多重继承
 */

class box
{
	public:
			int width, height, depth;
			box() {}
			box(int width, int height, int depth)
			{
				this->width = width;
				this->height = height;
				this->depth = depth;
			}

			void dump()
			{
				printf("this is box. width=%d, height=%d, depth=%d\n", width, height, depth);
			}

			int get_volume()
			{
				return width * height * depth;
			}
};

class solid_object
{
	public:
			int density;
			solid_object() {}
			solid_object(int density)
			{
				this->density = density;
			}

			int get_density()
			{
				return density;
			}

			void dump()
			{
				printf("this is solid_object. density=%d\n", density);
			}
};

class solid_box : box, solid_object
{
	public:
			solid_box(int width, int height, int depth, int density)
			{
				this->width = width;
				this->height = height;
				this->depth = depth;
				this->density = density;
			}

			void dump()
			{
				printf("this is solid_box. width=%d,height=%d,depth=%d,density=%d\n", width, height, depth, density);
			}

			int get_weight()
			{
				return get_volume() * get_density();
			}
};

int main()
{
	box b(10, 20, 30);
	solid_object so(100);
	solid_box sb (10, 20, 30, 3);

	b.dump();
	so.dump();
	sb.dump();
	printf("%d\n", sb.get_weight());

	return 0;
}

#if 0
/*
 * intel
 */
0000000000001169 <main>:
    1169:	f3 0f 1e fa          	endbr64 
    116d:	55                   	push   %rbp
    116e:	48 89 e5             	mov    %rsp,%rbp
    1171:	48 83 ec 30          	sub    $0x30,%rsp
    1175:	64 48 8b 04 25 28 00 	mov    %fs:0x28,%rax
    117c:	00 00 
    117e:	48 89 45 f8          	mov    %rax,-0x8(%rbp)
    1182:	31 c0                	xor    %eax,%eax
    1184:	48 8d 45 d4          	lea    -0x2c(%rbp),%rax
    1188:	b9 1e 00 00 00       	mov    $0x1e,%ecx
    118d:	ba 14 00 00 00       	mov    $0x14,%edx
    1192:	be 0a 00 00 00       	mov    $0xa,%esi
    1197:	48 89 c7             	mov    %rax,%rdi
    119a:	e8 a1 00 00 00       	callq  1240 <_ZN3boxC1Eiii>
    119f:	48 8d 45 d0          	lea    -0x30(%rbp),%rax
    11a3:	be 64 00 00 00       	mov    $0x64,%esi
    11a8:	48 89 c7             	mov    %rax,%rdi
    11ab:	e8 38 01 00 00       	callq  12e8 <_ZN12solid_objectC1Ei>
    11b0:	48 8d 45 e0          	lea    -0x20(%rbp),%rax
    11b4:	41 b8 03 00 00 00    	mov    $0x3,%r8d
    11ba:	b9 1e 00 00 00       	mov    $0x1e,%ecx
    11bf:	ba 14 00 00 00       	mov    $0x14,%edx
    11c4:	be 0a 00 00 00       	mov    $0xa,%esi
    11c9:	48 89 c7             	mov    %rax,%rdi
    11cc:	e8 73 01 00 00       	callq  1344 <_ZN9solid_boxC1Eiiii>
    11d1:	48 8d 45 d4          	lea    -0x2c(%rbp),%rax
    11d5:	48 89 c7             	mov    %rax,%rdi
    11d8:	e8 99 00 00 00       	callq  1276 <_ZN3box4dumpEv>
    11dd:	48 8d 45 d0          	lea    -0x30(%rbp),%rax
    11e1:	48 89 c7             	mov    %rax,%rdi
    11e4:	e8 2f 01 00 00       	callq  1318 <_ZN12solid_object4dumpEv>
    11e9:	48 8d 45 e0          	lea    -0x20(%rbp),%rax
    11ed:	48 89 c7             	mov    %rax,%rdi
    11f0:	e8 b3 01 00 00       	callq  13a8 <_ZN9solid_box4dumpEv>
    11f5:	48 8d 45 e0          	lea    -0x20(%rbp),%rax
    11f9:	48 89 c7             	mov    %rax,%rdi
    11fc:	e8 eb 01 00 00       	callq  13ec <_ZN9solid_box10get_weightEv>
    1201:	89 c6                	mov    %eax,%esi
    1203:	48 8d 3d 91 0e 00 00 	lea    0xe91(%rip),%rdi        # 209b <_IO_stdin_used+0x9b>
    120a:	b8 00 00 00 00       	mov    $0x0,%eax
    120f:	e8 5c fe ff ff       	callq  1070 <printf@plt>
    1214:	b8 00 00 00 00       	mov    $0x0,%eax
    1219:	48 8b 55 f8          	mov    -0x8(%rbp),%rdx
    121d:	64 48 33 14 25 28 00 	xor    %fs:0x28,%rdx
    1224:	00 00 
    1226:	74 05                	je     122d <main+0xc4>
    1228:	e8 33 fe ff ff       	callq  1060 <__stack_chk_fail@plt>
    122d:	c9                   	leaveq 
    122e:	c3                   	retq   
    122f:	90                   	nop

0000000000001230 <_ZN3boxC1Ev>:
    1230:	f3 0f 1e fa          	endbr64 
    1234:	55                   	push   %rbp
    1235:	48 89 e5             	mov    %rsp,%rbp
    1238:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)
    123c:	90                   	nop
    123d:	5d                   	pop    %rbp
    123e:	c3                   	retq   
    123f:	90                   	nop

0000000000001240 <_ZN3boxC1Eiii>:
    1240:	f3 0f 1e fa          	endbr64 
    1244:	55                   	push   %rbp
    1245:	48 89 e5             	mov    %rsp,%rbp
    1248:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)
    124c:	89 75 f4             	mov    %esi,-0xc(%rbp)
    124f:	89 55 f0             	mov    %edx,-0x10(%rbp)
    1252:	89 4d ec             	mov    %ecx,-0x14(%rbp)
    1255:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    1259:	8b 55 f4             	mov    -0xc(%rbp),%edx
    125c:	89 10                	mov    %edx,(%rax)
    125e:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    1262:	8b 55 f0             	mov    -0x10(%rbp),%edx
    1265:	89 50 04             	mov    %edx,0x4(%rax)
    1268:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    126c:	8b 55 ec             	mov    -0x14(%rbp),%edx
    126f:	89 50 08             	mov    %edx,0x8(%rax)
    1272:	90                   	nop
    1273:	5d                   	pop    %rbp
    1274:	c3                   	retq   
    1275:	90                   	nop

0000000000001276 <_ZN3box4dumpEv>:
    1276:	f3 0f 1e fa          	endbr64 
    127a:	55                   	push   %rbp
    127b:	48 89 e5             	mov    %rsp,%rbp
    127e:	48 83 ec 10          	sub    $0x10,%rsp
    1282:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)
    1286:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    128a:	8b 48 08             	mov    0x8(%rax),%ecx
    128d:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    1291:	8b 50 04             	mov    0x4(%rax),%edx
    1294:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    1298:	8b 00                	mov    (%rax),%eax
    129a:	89 c6                	mov    %eax,%esi
    129c:	48 8d 3d 65 0d 00 00 	lea    0xd65(%rip),%rdi        # 2008 <_IO_stdin_used+0x8>
    12a3:	b8 00 00 00 00       	mov    $0x0,%eax
    12a8:	e8 c3 fd ff ff       	callq  1070 <printf@plt>
    12ad:	90                   	nop
    12ae:	c9                   	leaveq 
    12af:	c3                   	retq   

00000000000012b0 <_ZN3box10get_volumeEv>:
    12b0:	f3 0f 1e fa          	endbr64 
    12b4:	55                   	push   %rbp
    12b5:	48 89 e5             	mov    %rsp,%rbp
    12b8:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)
    12bc:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    12c0:	8b 10                	mov    (%rax),%edx
    12c2:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    12c6:	8b 40 04             	mov    0x4(%rax),%eax
    12c9:	0f af d0             	imul   %eax,%edx
    12cc:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    12d0:	8b 40 08             	mov    0x8(%rax),%eax
    12d3:	0f af c2             	imul   %edx,%eax
    12d6:	5d                   	pop    %rbp
    12d7:	c3                   	retq   

00000000000012d8 <_ZN12solid_objectC1Ev>:
    12d8:	f3 0f 1e fa          	endbr64 
    12dc:	55                   	push   %rbp
    12dd:	48 89 e5             	mov    %rsp,%rbp
    12e0:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)
    12e4:	90                   	nop
    12e5:	5d                   	pop    %rbp
    12e6:	c3                   	retq   
    12e7:	90                   	nop

00000000000012e8 <_ZN12solid_objectC1Ei>:
    12e8:	f3 0f 1e fa          	endbr64 
    12ec:	55                   	push   %rbp
    12ed:	48 89 e5             	mov    %rsp,%rbp
    12f0:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)
    12f4:	89 75 f4             	mov    %esi,-0xc(%rbp)
    12f7:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    12fb:	8b 55 f4             	mov    -0xc(%rbp),%edx
    12fe:	89 10                	mov    %edx,(%rax)
    1300:	90                   	nop
    1301:	5d                   	pop    %rbp
    1302:	c3                   	retq   
    1303:	90                   	nop

0000000000001304 <_ZN12solid_object11get_densityEv>:
    1304:	f3 0f 1e fa          	endbr64 
    1308:	55                   	push   %rbp
    1309:	48 89 e5             	mov    %rsp,%rbp
    130c:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)
    1310:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    1314:	8b 00                	mov    (%rax),%eax
    1316:	5d                   	pop    %rbp
    1317:	c3                   	retq   

0000000000001318 <_ZN12solid_object4dumpEv>:
    1318:	f3 0f 1e fa          	endbr64 
    131c:	55                   	push   %rbp
    131d:	48 89 e5             	mov    %rsp,%rbp
    1320:	48 83 ec 10          	sub    $0x10,%rsp
    1324:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)
    1328:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    132c:	8b 00                	mov    (%rax),%eax
    132e:	89 c6                	mov    %eax,%esi
    1330:	48 8d 3d 01 0d 00 00 	lea    0xd01(%rip),%rdi        # 2038 <_IO_stdin_used+0x38>
    1337:	b8 00 00 00 00       	mov    $0x0,%eax
    133c:	e8 2f fd ff ff       	callq  1070 <printf@plt>
    1341:	90                   	nop
    1342:	c9                   	leaveq 
    1343:	c3                   	retq   

0000000000001344 <_ZN9solid_boxC1Eiiii>:
    1344:	f3 0f 1e fa          	endbr64 
    1348:	55                   	push   %rbp
    1349:	48 89 e5             	mov    %rsp,%rbp
    134c:	48 83 ec 20          	sub    $0x20,%rsp
    1350:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)
    1354:	89 75 f4             	mov    %esi,-0xc(%rbp)
    1357:	89 55 f0             	mov    %edx,-0x10(%rbp)
    135a:	89 4d ec             	mov    %ecx,-0x14(%rbp)
    135d:	44 89 45 e8          	mov    %r8d,-0x18(%rbp)
    1361:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    1365:	48 89 c7             	mov    %rax,%rdi
    1368:	e8 c3 fe ff ff       	callq  1230 <_ZN3boxC1Ev>
    136d:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    1371:	48 83 c0 0c          	add    $0xc,%rax
    1375:	48 89 c7             	mov    %rax,%rdi
    1378:	e8 5b ff ff ff       	callq  12d8 <_ZN12solid_objectC1Ev>
    137d:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    1381:	8b 55 f4             	mov    -0xc(%rbp),%edx
    1384:	89 10                	mov    %edx,(%rax)
    1386:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    138a:	8b 55 f0             	mov    -0x10(%rbp),%edx
    138d:	89 50 04             	mov    %edx,0x4(%rax)
    1390:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    1394:	8b 55 ec             	mov    -0x14(%rbp),%edx
    1397:	89 50 08             	mov    %edx,0x8(%rax)
    139a:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    139e:	8b 55 e8             	mov    -0x18(%rbp),%edx
    13a1:	89 50 0c             	mov    %edx,0xc(%rax)
    13a4:	90                   	nop
    13a5:	c9                   	leaveq 
    13a6:	c3                   	retq   
    13a7:	90                   	nop

00000000000013a8 <_ZN9solid_box4dumpEv>:
    13a8:	f3 0f 1e fa          	endbr64 
    13ac:	55                   	push   %rbp
    13ad:	48 89 e5             	mov    %rsp,%rbp
    13b0:	48 83 ec 10          	sub    $0x10,%rsp
    13b4:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)
    13b8:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    13bc:	8b 70 0c             	mov    0xc(%rax),%esi
    13bf:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    13c3:	8b 48 08             	mov    0x8(%rax),%ecx
    13c6:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    13ca:	8b 50 04             	mov    0x4(%rax),%edx
    13cd:	48 8b 45 f8          	mov    -0x8(%rbp),%rax
    13d1:	8b 00                	mov    (%rax),%eax
    13d3:	41 89 f0             	mov    %esi,%r8d
    13d6:	89 c6                	mov    %eax,%esi
    13d8:	48 8d 3d 81 0c 00 00 	lea    0xc81(%rip),%rdi        # 2060 <_IO_stdin_used+0x60>
    13df:	b8 00 00 00 00       	mov    $0x0,%eax
    13e4:	e8 87 fc ff ff       	callq  1070 <printf@plt>
    13e9:	90                   	nop
    13ea:	c9                   	leaveq 
    13eb:	c3                   	retq   

00000000000013ec <_ZN9solid_box10get_weightEv>:
    13ec:	f3 0f 1e fa          	endbr64 
    13f0:	55                   	push   %rbp
    13f1:	48 89 e5             	mov    %rsp,%rbp
    13f4:	53                   	push   %rbx
    13f5:	48 83 ec 18          	sub    $0x18,%rsp
    13f9:	48 89 7d e8          	mov    %rdi,-0x18(%rbp)
    13fd:	48 8b 45 e8          	mov    -0x18(%rbp),%rax
    1401:	48 89 c7             	mov    %rax,%rdi
    1404:	e8 a7 fe ff ff       	callq  12b0 <_ZN3box10get_volumeEv>
    1409:	89 c3                	mov    %eax,%ebx
    140b:	48 8b 45 e8          	mov    -0x18(%rbp),%rax
    140f:	48 83 c0 0c          	add    $0xc,%rax
    1413:	48 89 c7             	mov    %rax,%rdi
    1416:	e8 e9 fe ff ff       	callq  1304 <_ZN12solid_object11get_densityEv>
    141b:	0f af c3             	imul   %ebx,%eax
    141e:	48 83 c4 18          	add    $0x18,%rsp
    1422:	5b                   	pop    %rbx
    1423:	5d                   	pop    %rbp
    1424:	c3                   	retq   
    1425:	66 2e 0f 1f 84 00 00 	nopw   %cs:0x0(%rax,%rax,1)
    142c:	00 00 00 
    142f:	90                   	nop

/*
 * arm
 */
000000000040062c <main>:
  40062c:	a9bc7bfd 	stp	x29, x30, [sp, #-64]!
  400630:	910003fd 	mov	x29, sp
  400634:	9100c3a0 	add	x0, x29, #0x30
  400638:	528003c3 	mov	w3, #0x1e                  	// #30
  40063c:	52800282 	mov	w2, #0x14                  	// #20
  400640:	52800141 	mov	w1, #0xa                   	// #10
  400644:	9400001e 	bl	4006bc <_ZN3boxC1Eiii>
  400648:	9100a3a0 	add	x0, x29, #0x28
  40064c:	52800c81 	mov	w1, #0x64                  	// #100
  400650:	9400004c 	bl	400780 <_ZN12solid_objectC1Ei>
  400654:	910063a0 	add	x0, x29, #0x18
  400658:	52800064 	mov	w4, #0x3                   	// #3
  40065c:	528003c3 	mov	w3, #0x1e                  	// #30
  400660:	52800282 	mov	w2, #0x14                  	// #20
  400664:	52800141 	mov	w1, #0xa                   	// #10
  400668:	94000060 	bl	4007e8 <_ZN9solid_boxC1Eiiii>
  40066c:	9100c3a0 	add	x0, x29, #0x30
  400670:	94000024 	bl	400700 <_ZN3box4dumpEv>
  400674:	9100a3a0 	add	x0, x29, #0x28
  400678:	94000051 	bl	4007bc <_ZN12solid_object4dumpEv>
  40067c:	910063a0 	add	x0, x29, #0x18
  400680:	94000075 	bl	400854 <_ZN9solid_box4dumpEv>
  400684:	910063a0 	add	x0, x29, #0x18
  400688:	94000084 	bl	400898 <_ZN9solid_box10get_weightEv>
  40068c:	2a0003e1 	mov	w1, w0
  400690:	90000000 	adrp	x0, 400000 <_init-0x4b8>
  400694:	91286000 	add	x0, x0, #0xa18
  400698:	97ffffa2 	bl	400520 <printf@plt>
  40069c:	52800000 	mov	w0, #0x0                   	// #0
  4006a0:	a8c47bfd 	ldp	x29, x30, [sp], #64
  4006a4:	d65f03c0 	ret

00000000004006a8 <_ZN3boxC1Ev>:
  4006a8:	d10043ff 	sub	sp, sp, #0x10
  4006ac:	f90007e0 	str	x0, [sp, #8]
  4006b0:	d503201f 	nop
  4006b4:	910043ff 	add	sp, sp, #0x10
  4006b8:	d65f03c0 	ret

00000000004006bc <_ZN3boxC1Eiii>:
  4006bc:	d10083ff 	sub	sp, sp, #0x20
  4006c0:	f9000fe0 	str	x0, [sp, #24]
  4006c4:	b90017e1 	str	w1, [sp, #20]
  4006c8:	b90013e2 	str	w2, [sp, #16]
  4006cc:	b9000fe3 	str	w3, [sp, #12]
  4006d0:	f9400fe0 	ldr	x0, [sp, #24]
  4006d4:	b94017e1 	ldr	w1, [sp, #20]
  4006d8:	b9000001 	str	w1, [x0]
  4006dc:	f9400fe0 	ldr	x0, [sp, #24]
  4006e0:	b94013e1 	ldr	w1, [sp, #16]
  4006e4:	b9000401 	str	w1, [x0, #4]
  4006e8:	f9400fe0 	ldr	x0, [sp, #24]
  4006ec:	b9400fe1 	ldr	w1, [sp, #12]
  4006f0:	b9000801 	str	w1, [x0, #8]
  4006f4:	d503201f 	nop
  4006f8:	910083ff 	add	sp, sp, #0x20
  4006fc:	d65f03c0 	ret

0000000000400700 <_ZN3box4dumpEv>:
  400700:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400704:	910003fd 	mov	x29, sp
  400708:	f9000fa0 	str	x0, [x29, #24]
  40070c:	f9400fa0 	ldr	x0, [x29, #24]
  400710:	b9400001 	ldr	w1, [x0]
  400714:	f9400fa0 	ldr	x0, [x29, #24]
  400718:	b9400402 	ldr	w2, [x0, #4]
  40071c:	f9400fa0 	ldr	x0, [x29, #24]
  400720:	b9400803 	ldr	w3, [x0, #8]
  400724:	90000000 	adrp	x0, 400000 <_init-0x4b8>
  400728:	91260000 	add	x0, x0, #0x980
  40072c:	97ffff7d 	bl	400520 <printf@plt>
  400730:	d503201f 	nop
  400734:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400738:	d65f03c0 	ret

000000000040073c <_ZN3box10get_volumeEv>:
  40073c:	d10043ff 	sub	sp, sp, #0x10
  400740:	f90007e0 	str	x0, [sp, #8]
  400744:	f94007e0 	ldr	x0, [sp, #8]
  400748:	b9400001 	ldr	w1, [x0]
  40074c:	f94007e0 	ldr	x0, [sp, #8]
  400750:	b9400400 	ldr	w0, [x0, #4]
  400754:	1b007c21 	mul	w1, w1, w0
  400758:	f94007e0 	ldr	x0, [sp, #8]
  40075c:	b9400800 	ldr	w0, [x0, #8]
  400760:	1b007c20 	mul	w0, w1, w0
  400764:	910043ff 	add	sp, sp, #0x10
  400768:	d65f03c0 	ret

000000000040076c <_ZN12solid_objectC1Ev>:
  40076c:	d10043ff 	sub	sp, sp, #0x10
  400770:	f90007e0 	str	x0, [sp, #8]
  400774:	d503201f 	nop
  400778:	910043ff 	add	sp, sp, #0x10
  40077c:	d65f03c0 	ret

0000000000400780 <_ZN12solid_objectC1Ei>:
  400780:	d10043ff 	sub	sp, sp, #0x10
  400784:	f90007e0 	str	x0, [sp, #8]
  400788:	b90007e1 	str	w1, [sp, #4]
  40078c:	f94007e0 	ldr	x0, [sp, #8]
  400790:	b94007e1 	ldr	w1, [sp, #4]
  400794:	b9000001 	str	w1, [x0]
  400798:	d503201f 	nop
  40079c:	910043ff 	add	sp, sp, #0x10
  4007a0:	d65f03c0 	ret

00000000004007a4 <_ZN12solid_object11get_densityEv>:
  4007a4:	d10043ff 	sub	sp, sp, #0x10
  4007a8:	f90007e0 	str	x0, [sp, #8]
  4007ac:	f94007e0 	ldr	x0, [sp, #8]
  4007b0:	b9400000 	ldr	w0, [x0]
  4007b4:	910043ff 	add	sp, sp, #0x10
  4007b8:	d65f03c0 	ret

00000000004007bc <_ZN12solid_object4dumpEv>:
  4007bc:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  4007c0:	910003fd 	mov	x29, sp
  4007c4:	f9000fa0 	str	x0, [x29, #24]
  4007c8:	f9400fa0 	ldr	x0, [x29, #24]
  4007cc:	b9400001 	ldr	w1, [x0]
  4007d0:	90000000 	adrp	x0, 400000 <_init-0x4b8>
  4007d4:	9126c000 	add	x0, x0, #0x9b0
  4007d8:	97ffff52 	bl	400520 <printf@plt>
  4007dc:	d503201f 	nop
  4007e0:	a8c27bfd 	ldp	x29, x30, [sp], #32
  4007e4:	d65f03c0 	ret

00000000004007e8 <_ZN9solid_boxC1Eiiii>:
  4007e8:	a9bd7bfd 	stp	x29, x30, [sp, #-48]!
  4007ec:	910003fd 	mov	x29, sp
  4007f0:	f90017a0 	str	x0, [x29, #40]
  4007f4:	b90027a1 	str	w1, [x29, #36]
  4007f8:	b90023a2 	str	w2, [x29, #32]
  4007fc:	b9001fa3 	str	w3, [x29, #28]
  400800:	b9001ba4 	str	w4, [x29, #24]
  400804:	f94017a0 	ldr	x0, [x29, #40]
  400808:	97ffffa8 	bl	4006a8 <_ZN3boxC1Ev>
  40080c:	f94017a0 	ldr	x0, [x29, #40]
  400810:	91003000 	add	x0, x0, #0xc
  400814:	97ffffd6 	bl	40076c <_ZN12solid_objectC1Ev>
  400818:	f94017a0 	ldr	x0, [x29, #40]
  40081c:	b94027a1 	ldr	w1, [x29, #36]
  400820:	b9000001 	str	w1, [x0]
  400824:	f94017a0 	ldr	x0, [x29, #40]
  400828:	b94023a1 	ldr	w1, [x29, #32]
  40082c:	b9000401 	str	w1, [x0, #4]
  400830:	f94017a0 	ldr	x0, [x29, #40]
  400834:	b9401fa1 	ldr	w1, [x29, #28]
  400838:	b9000801 	str	w1, [x0, #8]
  40083c:	f94017a0 	ldr	x0, [x29, #40]
  400840:	b9401ba1 	ldr	w1, [x29, #24]
  400844:	b9000c01 	str	w1, [x0, #12]
  400848:	d503201f 	nop
  40084c:	a8c37bfd 	ldp	x29, x30, [sp], #48
  400850:	d65f03c0 	ret

0000000000400854 <_ZN9solid_box4dumpEv>:
  400854:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400858:	910003fd 	mov	x29, sp
  40085c:	f9000fa0 	str	x0, [x29, #24]
  400860:	f9400fa0 	ldr	x0, [x29, #24]
  400864:	b9400001 	ldr	w1, [x0]
  400868:	f9400fa0 	ldr	x0, [x29, #24]
  40086c:	b9400402 	ldr	w2, [x0, #4]
  400870:	f9400fa0 	ldr	x0, [x29, #24]
  400874:	b9400803 	ldr	w3, [x0, #8]
  400878:	f9400fa0 	ldr	x0, [x29, #24]
  40087c:	b9400c04 	ldr	w4, [x0, #12]
  400880:	90000000 	adrp	x0, 400000 <_init-0x4b8>
  400884:	91276000 	add	x0, x0, #0x9d8
  400888:	97ffff26 	bl	400520 <printf@plt>
  40088c:	d503201f 	nop
  400890:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400894:	d65f03c0 	ret

0000000000400898 <_ZN9solid_box10get_weightEv>:
  400898:	a9bd7bfd 	stp	x29, x30, [sp, #-48]!
  40089c:	910003fd 	mov	x29, sp
  4008a0:	f9000bf3 	str	x19, [sp, #16]
  4008a4:	f90017a0 	str	x0, [x29, #40]
  4008a8:	f94017a0 	ldr	x0, [x29, #40]
  4008ac:	97ffffa4 	bl	40073c <_ZN3box10get_volumeEv>
  4008b0:	2a0003f3 	mov	w19, w0
  4008b4:	f94017a0 	ldr	x0, [x29, #40]
  4008b8:	91003000 	add	x0, x0, #0xc
  4008bc:	97ffffba 	bl	4007a4 <_ZN12solid_object11get_densityEv>
  4008c0:	1b007e60 	mul	w0, w19, w0
  4008c4:	f9400bf3 	ldr	x19, [sp, #16]
  4008c8:	a8c37bfd 	ldp	x29, x30, [sp], #48
  4008cc:	d65f03c0 	ret


#endif

